<method name="PlayPause" /> \
<method name="Next" /> \
<method name="Previous" /> \
+ <property name="CanGoNext" type="b" access="read" /> \
+ <property name="CanGoPrevious" type="b" access="read" /> \
<property name="CanPlay" type="b" access="read" /> \
<property name="Metadata" type="a{sv}" access="read" /> \
<property name="PlaybackStatus" type="s" access="read" /> \
this._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
this.setIcon(this._icon);
- this.addMediaControl('media-skip-backward-symbolic',
+ this._prevButton = this.addMediaControl('media-skip-backward-symbolic',
Lang.bind(this, function() {
this._player.previous();
}));
this._player.playPause();
}));
- this.addMediaControl('media-skip-forward-symbolic',
+ this._nextButton = this.addMediaControl('media-skip-forward-symbolic',
Lang.bind(this, function() {
this._player.next();
}));
Main.panel.closeCalendar();
},
+ _updateNavButton: function(button, sensitive) {
+ button.reactive = sensitive;
+ },
+
_update: function() {
this.setTitle(this._player.trackArtists.join(', '));
this.setBody(this._player.trackTitle);
let iconName = isPlaying ? 'media-playback-pause-symbolic'
: 'media-playback-start-symbolic';
this._playPauseButton.child.icon_name = iconName;
+
+ this._updateNavButton(this._prevButton, this._player.canGoPrevious);
+ this._updateNavButton(this._nextButton, this._player.canGoNext);
}
});
this._playerProxy.PlayPauseRemote();
},
+ get canGoNext() {
+ return this._playerProxy.CanGoNext;
+ },
+
next: function() {
this._playerProxy.NextRemote();
},
+ get canGoPrevious() {
+ return this._playerProxy.CanGoPrevious;
+ },
+
previous: function() {
this._playerProxy.PreviousRemote();
},